package org.xx.armory.service;

import static org.xx.armory.commons.Validators.notBlank;

/**
 * 临时文件对象。
 *
 * @author Haart
 */
public final class TempFileObject {
    public static final TempFileObject NONE = new TempFileObject("dummy", null);
    private final String name;
    private final byte[] content;

    /**
     * 构造临时文件对象。
     *
     * @param fileName
     *         文件名。
     * @param content
     *         文件内容, 如果是{@code null}则看作长度为{@code 0}的字节数组。
     * @throws IllegalArgumentException
     *         如果参数{@code fileName}是{@code null}或者只包含空白字符。
     */
    public TempFileObject(
            String fileName,
            byte[] content
    ) {
        this.name = notBlank(fileName, "fileName").trim();
        this.content = content == null ? new byte[0] : content;
    }

    /**
     * 获取临时文件的文件名。
     *
     * @return 临时文件的文件名。
     */
    public final String getName() {
        return this.name;
    }

    /**
     * 获取临时文件的内容。
     *
     * @return 临时文件的内容。
     */
    public final byte[] getContent() {
        return this.content;
    }

    /**
     * 获取临时文件的大小(以字节为单位)。
     *
     * @return 临时文件的大小(以字节为单位)。
     */
    public final long getSize() {
        return this.content.length;
    }
}
